package com.heima.wemedia.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import com.heima.model.wemedia.dtos.NewsAuthDto;
import com.heima.model.wemedia.dtos.WmNewsDto;
import com.heima.model.wemedia.dtos.WmNewsDto2;
import com.heima.model.wemedia.dtos.WmNewsPageReqDto;
import com.heima.model.wemedia.pojos.WmNews;
import com.heima.model.wemedia.vos.WmNewsVo;
import net.sourceforge.tess4j.TesseractException;

import java.io.IOException;
import java.util.List;

public interface WmNewsService extends IService<WmNews> {
    /**
     * 查询文章
     * @param dto 查询参数
     */
    ResponseResult<List<WmNews>> findAll(WmNewsPageReqDto dto);

    /**
     * 发布文章或保存草稿
     *
     * @param dto 文章信息
     */
    ResponseResult<AppHttpCodeEnum> submitOrSaveDraftNews(WmNewsDto dto)
            throws IOException, TesseractException;

    /**
     * 通过 id 查询文章
     * @param articleID 文章id
     */
    ResponseResult<WmNews> queryById(Integer articleID);

    /**
     * 删除文章
     *
     * @param id 文章id
     */
    ResponseResult<String> deleteById(Integer id);

    /**
     * 下架或上架文章
     * @param dto 文章信息
     */
    ResponseResult<String> downOrUp(WmNewsDto2 dto);

    /**
     * 列表查询
     *
     * @param dto 列表查询参数
     */
    ResponseResult<List<WmNewsVo>> listVo(NewsAuthDto dto);

    /**
     * 查询文章详情
     * @param id 文章id
     */
    ResponseResult<WmNewsVo> findWmNewsVo(Integer id);

    /**
     * 审核失败
     *
     * @param dto 审核失败参数
     */
    ResponseResult<AppHttpCodeEnum> authWmNews(NewsAuthDto dto, Short status);
}
